package org.Yiran.timetale_re.item.tool.screwdriver.modules.items.attribute;

import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.Tiers;
import org.Yiran.timetale_re.item.tool.screwdriver.core.ScrewdriverModuleItem;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleCategory;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.enmu.ModuleType;
import org.Yiran.timetale_re.item.tool.screwdriver.modules.type.MiningModule;
import org.jetbrains.annotations.NotNull;

/**
 * 中级挖掘模块物品类
 * <p>
 * 该类实现了中级挖掘模块，当安装到时英起子上时，
 * 可以提供钻石级别的挖掘能力，支持镐、斧、铲的功能。
 * </p>
 */
public class AdvancedMiningModuleItem extends ScrewdriverModuleItem implements MiningModule {
    
    // ==============================
    // 构造方法
    // ==============================

    /**
     * 中级挖掘模块物品构造函数
     * <p>
     * 创建一个中级挖掘模块物品实例。
     * </p>
     */
    public AdvancedMiningModuleItem() {
        super(
                ModuleLevel.ADVANCED,
                "tiername.level.professional"
        );
    }
    
    // ==============================
    // 物品属性方法
    // ==============================

    @Override
    public int getHarvestLevel() {
        return Tiers.DIAMOND.getLevel();
    }
    
    @Override
    public String[] getToolTypes() {
        return new String[] { "pickaxe", "axe", "shovel" };
    }
    
    @Override
    public Tier getTier() {
        return Tiers.DIAMOND;
    }
    
    /**
     * 判断是否为工具
     * <p>
     * 判断该物品是否为工具类型。
     * </p>
     *
     * @param stack 物品栈
     * @return 是否为工具
     */
    public boolean isTool(@NotNull ItemStack stack) {
        return true;
    }
    
    /**
     * 获取物品显示名称
     * <p>
     * 返回该模块物品的显示名称。
     * </p>
     *
     * @param stack 物品栈
     * @return 显示名称
     */
    @Override
    public @NotNull Component getName(@NotNull ItemStack stack) {
        return Component.translatable("item.timetale_re.advanced_mining_module");
    }
    
    /**
     * 获取模块的唯一标识符
     *
     * @return 模块ID
     */
    @Override
    public String getModuleId() {
        return "advanced_mining_module";
    }
    
    /**
     * 获取模块的显示名称
     *
     * @return 模块名称
     */
    @Override
    public Component getDisplayName() {
        return Component.translatable("item.timetale_re.advanced_mining_module");
    }
    
    /**
     * 获取模块类型
     *
     * @return 模块类型
     */
    @Override
    public ModuleType getModuleType() {
        return ModuleType.MINING;
    }
    
    /**
     * 获取模块分类
     *
     * @return 模块分类
     */
    @Override
    public ModuleCategory getModuleCategory() {
        return ModuleCategory.ATTRIBUTE;
    }

    @Override
    public ScrewdriverModuleItem.ModuleLevel getModuleLevel() {
        return ScrewdriverModuleItem.ModuleLevel.ADVANCED;
    }
}